#include "cmsis_os2.h"
#include "lvgl.h"


extern osMutexId_t LvglMutexHandle;

void StartLvglTask(void *argument)
{
    osMutexAcquire(LvglMutexHandle, osWaitForever);

    lv_obj_t* bar = lv_bar_create(lv_scr_act());                /* 创建 bar 部件 */
    lv_obj_center(bar);                                         /* 中心对齐 */
    lv_obj_set_style_bg_color(bar, lv_color_black(), LV_STATE_DEFAULT);
    lv_obj_set_style_bg_color(bar, lv_palette_main(LV_PALETTE_BLUE), LV_STATE_DEFAULT);
    lv_bar_set_value(bar, 0, LV_ANIM_OFF);                      /* 设置当前值，不开启动画 */

    lv_obj_t *label = lv_label_create(lv_scr_act());            /* 创建 label 部件 */
    lv_obj_align_to(label, bar, LV_ALIGN_OUT_TOP_MID, -25, -15);/* 设置对齐方式 */
    lv_label_set_text(label, "LOADING...");                     /* 设置 label 文本内容 */

    lv_obj_t *label2 = lv_label_create(lv_scr_act());           /* 创建 label2 部件 */
    lv_obj_align_to(label2, bar, LV_ALIGN_OUT_BOTTOM_MID, 5, 15);/* 设置对齐方式 */
    lv_label_set_text(label2, "0 %");                          /* 设置 label2 文本内容 */


    osMutexRelease(LvglMutexHandle);

    for(;;)
    {
        osMutexAcquire(LvglMutexHandle, osWaitForever);
        lv_timer_handler();
        osMutexRelease(LvglMutexHandle);
        osDelay(5);

        static uint32_t cnt = 0;
        static int32_t bar_val = 0;
        if(cnt++ > 50)
        {
            cnt = 0;
            if(bar_val <= 100)
            {
                lv_bar_set_value(bar, bar_val++, LV_ANIM_OFF); /* 设置 bar 当前值，不开启动画 */
                lv_label_set_text_fmt(label2, "%d %%", (int)lv_bar_get_value(bar)); /* 更新 label2 文本内容 */
            }
        }
    }
}
